//20071025 Eric Kao, 大幅修改連動選擇, 讓呼叫時更方便
//20071012 Eric Kao, add the function change(),ComboBox 的連動選擇
//20071012 Eric Kao was created.
//這是有關的 Combobox Util

//when combobox option is empty
displayWhenEmpty = "";
valueWhenEmpty = "";

/**
 * 1. ComboBox 的連動選擇, 如:選了台北市, 會出現中山區, 中正區, 大同區等等, 讓你做選擇
 * 2. 可以做到多層 ComboBox 的連動, 可以到二層, 三層, 四層或更多層
 * 3. 使用時, 請將 id 設成, 如: test_0, test_1, test_2, 要從 0 開始, title 可設也可不設
 * 4. title 為每個 comboBox 第一筆顯示的資料, 換包話說, 第一個 option 為 <option value="">title</option>
 * 5. 第一個 option 的 value 都為 ""
 * 6. 第一層資料變數名稱為 data_1, data_2, 第二層資料變數名稱為 data_1_1, data_1_2, data_1_3, data_2_1, data_2_1, 以此類推
 *
 * @param comboBoxObj select DOM,一般傳入 "this"
 **/
function dynamicComboBox( comboBoxObj )
{	
	var tempString = 'data';
	
	var idArray = comboBoxObj.id.split( "_" );	//ex: test_0
	
	var idName = idArray[0];	//ex: test
	var idNumber = idArray[1];	//ex: 0
	
	var currentIndex = parseInt( idNumber );
	
  	var nextIndex = currentIndex + 1;
  	
  	var selectObj;  	
  	
	//先清除
	while( true )
	{
		selectObj = document.getElementById( idName + "_" + nextIndex );
		
		if( eval( selectObj ) == 'undefined' || selectObj == null )
			break;
			
		for( m = selectObj.options.length - 1 ; m > 0 ; m-- )
			selectObj.options[ m ] = null;			
		
		selectObj.options[0] = new Option( displayWhenEmpty, valueWhenEmpty );
		
		nextIndex++;
	}
   
   //決定 tempString, 如在第二層選了第二個 option, 那麼就為   data_1_2
   	nextIndex=0;
   	while( true )
   	{
   		selectObj = document.getElementById( idName + "_" + nextIndex );
   		
   		if( eval( selectObj ) == 'undefined' || selectObj == null )
			break;
		
		var selected = selectObj.selectedIndex;
		
		if( selected == -1 )
		{
			currentIndex = -1;
			
			break;
		}
		
		tempString = tempString + "_" + selected;		
		
		if( nextIndex == currentIndex ) break;
	
		nextIndex++;
   	}
   	
   	//選擇的 combobox, 其填充下一個 comboBox, 如:我們選擇了第二個 combobox, 那麼就開始填充第三個 combobox
   	selectObj = document.getElementById( idName + "_" + ( currentIndex + 1 ) );   	
	if( eval( selectObj ) != 'undefined' && selectObj != null )
	{
		var nextFirstLabel = selectObj.title;
	
		tempString += "_";
	
		nextIndex=0;
		
		while( true )
		{
			var temp = eval( "typeof(" + tempString + nextIndex + ") == 'undefined'" );
			
			if( temp && nextIndex != 0 )
				break;
			
  	  		if( nextIndex == 0 && temp )
  	  		{
      			if( eval( "typeof(" + tempString + "1) == 'undefined'" ) )
      				eval( "selectObj.options[0] = new Option( displayWhenEmpty, valueWhenEmpty )" );
   				else
      				eval( "selectObj.options[0] = new Option( nextFirstLabel, '' )" );
      		}
     		else
            	eval( "selectObj.options[" + nextIndex + "]=new Option(" + tempString + nextIndex + ".text," + tempString + nextIndex + ".value)" );
            	
     		nextIndex = nextIndex + 1;
  		}   		
   	}    
}

/**
 * 1. 和連動式  comboBox 有關
 * 2. 可設定預設, 如:第一個 combobox 我們選擇了台北市, 且已知預設是在中正區, 那麼第二個 combobox 的預設將是中正區
 *
 * @idName, 不包含底線之後的 idName, 如: idName="test_2"
 **/
function doMultiSelectDefault( comboBoxArray, idName )
{
	for( var i = 0 ; i < comboBoxArray.length ; i++ )
	{
		var temp = document.getElementById( idName + "_" + i );
		temp.options[ comboBoxArray[i] ].selected = true;
		dynamicComboBox( temp );
	}
}